package com.catsic.zcjc.service;

import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import com.catsic.base.BaseService;
import com.catsic.base.tree.TreeInfo;
import com.catsic.core.conditon.OrganCondition;
import com.catsic.core.entity.Organ;
import com.catsic.zcjc.condition.StationCondition;
import com.catsic.zcjc.entity.Station;
import com.catsic.zcjc.form.StationCountForm;
import com.catsic.zcjc.form.StationForm;

public interface StationService extends BaseService<Station,String>{
	/**
	 * 添加
	 * @param form
	 */
	public StationForm add(StationForm form);
	
	/**
	 * 更新
	 * @param form
	 */
	public StationForm update(StationForm form);
	
	/**
	 * delete:通过id删除
	 * @author yangyd
	 * @param id
	 * @return 
	 */
	public void delete(String id);
	
	/**
	 * 通过Id查询
	 * @param 
	 */
	public Station findById(String id);
	
	/**
	 * 通过Id取得查询
	 * @param 
	 */
	public StationForm findStationById(String id);
	
	/**
	 * query:通过机构ID查询该机构所有站点，转换为FORM
	 * @author yangyd
	 * @param organId
	 * @return
	 */
	public List<StationForm> query(String organId);
	
	/**
	 * findByOrganId:通过机构ID查询该机构所有站点
	 * @author yangyd
	 * @param organId
	 * @return
	 */
	public List<Station> findByOrganId(String organId);
	
	/**
	 * 分页查询站点
	 * @param condition
	 * @param pageable
	 * @return
	 */
	public Page<StationForm> findAll(StationCondition condition, Pageable pageable);
	
	/**
	 * 站点树查询
	 * @param condition
	 * @return
	 */
	public List<TreeInfo> getTreeInfo(String id);
	
	/**
	 * 站点树查询
	 * @param condition
	 * @return
	 */
	public List<TreeInfo> query(OrganCondition condition);
	
	/**
	 * 根据行政区域统计站点
	 * @param 
	 * @return
	 */
	public List<StationCountForm> findCountByArea(String type,Integer areaId);
	
	/**
	 * 根据机构和行政区域统计站点
	 * @param 
	 * @return
	 */
	public List<StationCountForm> findCountByAreaAndOrg(Organ organ,Integer areaId);
	
	/**
	 * 将对象中的抽屉值转成显示名称
	 * @param form
	 */
	public void findFormatDrawer(StationForm form);
}
